package com.team01.pokemon.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;
import java.util.List;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

/**
 * <p>
 * 宝可梦基础信息表
 * </p>
 *
 * @author author
 * @since 2025-09-13
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("pokemon")
public class Pokemon extends BaseEntity implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 宝可梦编号，如001
     */
    @TableField("number")
    private String number;

    /**
     * 宝可梦名称
     */
    @TableField("pokemon_name")
    private String pokemonName;

    /**
     * 宝可梦介绍
     */
    @TableField("description")
    private String description;

    /**
     * 分类，比如：种子宝可梦
     */
    @TableField("category")
    private String category;

    /**
     * 第一特性
     */
    @TableField("ability_1")
    private String ability1;

    /**
     * 第一特性描述
     */
    @TableField("ability_1_description")
    private String ability1Description;

    /**
     * 第二特性
     */
    @TableField("ability_2")
    private String ability2;

    /**
     * 第二特性描述
     */
    @TableField("ability_2_description")
    private String ability2Description;

    /**
     * 隐藏特性
     */
    @TableField("hidden_ability")
    private String hiddenAbility;

    /**
     * 隐藏特性描述
     */
    @TableField("hidden_ability_description")
    private String hiddenAbilityDescription;

    /**
     * 宝可梦图片网络URL
     */
    @TableField("image_url")
    private String imageUrl;

    /**
     * 进化阶段：0基础，1一段进化，2二段进化等
     */
    @TableField("evolution_stage")
    private Integer evolutionStage;

    /**
     * 是否有其他形态：1有，0没有
     */
    @TableField("has_forms")
    private Integer hasForms;

    /**
     * 是否为默认形态：1是，0否
     */
    @TableField("is_default")
    private Integer isDefault;

    /**
     * 形态名称，如超级妙蛙花、超级巨化妙蛙花
     */
    @TableField("form_name")
    private String formName;

    /**
     * 形态类型：mega超级进化、gigantamax超级巨化、regional地区形态、other其他
     */
    @TableField("form_type")
    private String formType;

    /**
     * 生命值HP
     */
    @TableField("hp")
    private Integer hp;

    /**
     * 攻击
     */
    @TableField("attack")
    private Integer attack;

    /**
     * 防御
     */
    @TableField("defense")
    private Integer defense;

    /**
     * 特攻
     */
    @TableField("sp_attack")
    private Integer spAttack;

    /**
     * 特防
     */
    @TableField("sp_defense")
    private Integer spDefense;

    /**
     * 速度
     */
    @TableField("speed")
    private Integer speed;

    // 使用 @TableField(exist = false) 忽略此字段，它通过关联查询得到
    @TableField(exist = false)
    private List<Types> types;


}
